/**
 * 项目名称（软件名称）：忠旺机械物资管理系统(mms)
 * 研发设计单位：忠旺机械设备制造有限公司机械设计院智能控制设计科设计与研发。
 * 版权所有：忠旺机械设备制造有限公司
 * 注：本项目的一切技术专利，使用规范归解释权由忠旺机械设备制造有限公司所有。
 * 软件版本：Ver 1.0.0
 * 文件路径：com.zhongwang.mms.util
 * 创建时间：2020年03月17日 14时00分
 **/
package com.zhongwang.mms.util;

import com.zhongwang.mms.module.purchase.constant.PurchaseOrderType;
import com.zhongwang.mms.module.purchase.dao.PurWarInManageDao;
import com.zhongwang.mms.module.purchase.service.PurWarInManageService;
import org.springframework.beans.factory.annotation.Autowired;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @ClassName： PurchaseUtil
 * @Description： 外购件库工具类
 * @Author： 徐一贺
 * @Date： 2020/3/17 14:00
 * @Version： V1.0
 **/
public class PurchaseUtil {

    @Autowired
    private PurWarInManageService purWarInManageService;

    /**
     * @FunctionName: getNewOrderCode
     * @Description: 获取最新出入库单编码
     * @Author: 徐一贺
     * @CreateDate: 2020/3/17 14:02
     * @Phone: 18241927380
     * @Param:
     * @Return:
     * @Version:
     */
    public String getNewOrderCode(PurchaseOrderType purchaseOrderType) {
        String newOrderCode = "";
        if (purchaseOrderType == PurchaseOrderType.PRK) {
            newOrderCode = generatePRKOrderCode();
        } else if (purchaseOrderType == PurchaseOrderType.PCK) {

        }
        return newOrderCode;
    }

    /**
     * @FunctionName: findLastPRKOrderCode
     * @Description: 获取最新出库单编码
     * @设计思路： 1.判断年后两位+月+日与当前年月日是否相同，如果相同且流水号则在流水号上递增1。
     * 2.如果数据为空则按照以PRK+年（后两位）月日+001生成外购件出库单编码。
     * 3.如果不相同则按照以PRK+年（后两位）月日+001生成外购件出库单编码。
     * @Author: 徐一贺
     * @CreateDate: 2020/3/17 14:22
     * @Phone: 18241927380
     * @Param:
     * @Return: String 最新出库单编码
     * @Version:
     */
    private String generatePRKOrderCode() {
        String newGeneratePRKOrderCode = "";
        //获取最后编码
        String lastPRKOrderCode = purWarInManageService.findLastPRKOrderCode();
        //获取当前时间简码
        String datetimeCode = new SimpleDateFormat("yyMMDD").format(new Date());
        Integer sn = 0;
        if (lastPRKOrderCode.length() > 0) {
            //获取外购件库最新最后的入库单号
            sn = Integer.parseInt(lastPRKOrderCode.substring(9));
        }

        if (lastPRKOrderCode.length() == 0) {
            newGeneratePRKOrderCode = "PRK" + new SimpleDateFormat("yyMMDD").format(new Date()) + "001";
        } else if (!lastPRKOrderCode.substring(3, 9).equals(datetimeCode)) {
            newGeneratePRKOrderCode = "PRK" + new SimpleDateFormat("yyMMDD").format(new Date()) + "001";
        } else {
            newGeneratePRKOrderCode = "PRK" + new SimpleDateFormat("yyMMDD").format(new Date()) + (sn + 1);
        }
        return newGeneratePRKOrderCode;
    }


    /**
     * @FunctionName: findLastPRKOrderCode
     * @Description: 获取最新出库单编码
     * @设计思路： 1.判断年后两位+月+日与当前年月日是否相同，如果相同且流水号则在流水号上递增1。
     * 2.如果数据为空则按照以PRK+年（后两位）月日+001生成外购件出库单编码。
     * 3.如果不相同则按照以PRK+年（后两位）月日+001生成外购件出库单编码。
     * @Author: 徐一贺
     * @CreateDate: 2020/3/17 14:22
     * @Phone: 18241927380
     * @Param:
     * @Return: String 最新出库单编码
     * @Version:
     */
    private String generatePCKOrderCode() {
        String newGeneratePRKOrderCode = "";
        //获取最后编码
        String lastPCKOrderCode = purWarInManageService.findLastPCKOrderCode();
        //获取当前时间简码
        String datetimeCode = new SimpleDateFormat("yyMMDD").format(new Date());
        if (lastPCKOrderCode == null) {
            newGeneratePRKOrderCode = "PCK" + new SimpleDateFormat("yyMMDD").format(new Date()) + "001";
        } else if (!lastPCKOrderCode.substring(3, 9).equals(datetimeCode)) {
            newGeneratePRKOrderCode = "PCK" + new SimpleDateFormat("yyMMDD").format(new Date()) + "001";
        } else {
            //获取外购件库最新最后的入库单号
            Integer sn = Integer.parseInt(lastPCKOrderCode.substring(9));
            newGeneratePRKOrderCode = "PCK" + new SimpleDateFormat("yyMMDD").format(new Date()) + String.format("%03d", (sn + 1)); //25为int型 ;
        }
        return newGeneratePRKOrderCode;
    }





}